Memory circuits have continued to have more and more bits of storage primarily due to the continued scaling of the processes used in making the memory circuits. The scaling below 0.1 micron feature size, which has reduced both transistor sizes and power supply voltage, has also resulted in memory arrays that have memory cells that provide differing signal strength. The differing strength has had an adverse impact on speed of operation, which is generally directly related to the time required to perform a read operation. This has been particularly exacerbated with operating frequencies exceeding one gigahertz (GHz). To maintain a given speed requirement, memory circuits generally have certain amounts of time allotted to each of the various elements required for performing a read operation. The primary time allocations are a time from a valid address to enabling a word line, a time to achieve a sufficient signal on the bit line(s), a time from sensing the signal on the bit lines to providing an output, and a time to precharge in preparation for the next time a word line is enabled. The typical approach for improving speed is to try to reduce the time required for these operations with a cycle beginning with responding to a valid address. This has been effective in providing speed improvements as transistor switching speeds have improved with scaling. Speed, however, is not just dependent on switching speeds of the transistors but also on the strength of the memory cells. The strength of the memory cells, however, is not uniform and sometimes some cells are just too weak to meet the speed requirements and the particular device must considered defective.
Thus, there is a need to reduce the number of defective devices and also to maintain improvements in speed with scaling.